// 导入数据库模块
const db = require('../db/index')
const path = require('path')

// 发布新文章的处理函数
exports.addArticle = (req, res)=>{
    //手动判断是否上传了文章封面
    if(!req.file || req.file.fieldname !== 'cover_img'){
        return res.cc('文章封面是必选参数！')
    }

    //表单数据合法，继续后面的处理流程，实现文章发布的功能
    // 整理要插入数据库的文章信息
    const articleInfo = {
        ...req.body,
        // 文章封面在服务器端的存放路径
        cover_img: path.join('/uploads/article', req.file.filename),
        //文章发布时间
        pub_date: new Date(),
        //文章作者的Id
        author_id: req.user.id,
        update_time: new Date()
    }
    const sql = 'insert into ev_articles set ?'
    db.query(sql, articleInfo, (err, results)=>{
        if(err){
            return res.cc(err)
        }
        if(results.affectedRows !== 1){
            return res.cc('发布文章失败！')
        }
        //发布文章成功
        res.cc('发布文章成功！', 0)
    })

}


//更新文章
exports.updateArticle = (req, res)=>{
    //手动判断是否上传了文章封面
    if(!req.file || req.file.fieldname !== 'cover_img'){
        return res.cc('文章封面是必选参数！')
    }
    //表单数据合法，继续后面的处理流程，实现更新文章的功能
    // 整理要更新的文章信息
    const articleInfo = {
        ...req.body,
        // 文章封面在服务器端的存放路径
        cover_img: path.join('/uploads/article', req.file.filename),
        //文章作者的Id
        author_id: req.user.id,
    }
    const sql = 'update ev_articles set ? where id = ?'
    db.query(sql, [articleInfo, req.body.id], (err, results)=>{
        if(err){
            return res.cc(err)
        }
        if(results.affectedRows !== 1){
            return res.cc('更新文章失败！')
        }
        //更新文章成功
        res.cc('更新文章成功！', 0)
    })
}

//根据id获取文章详情
exports.getArticleById = (req, res)=>{
    // const sql = 'select * from ev_articles where id = ?'

    const sql = 'select ev_articles.*, ev_users.username as username, ev_users.nickname, ev_article_cate.name as cate_name  from ev_articles LEFT JOIN ev_article_cate ON ev_articles.cate_id = ev_article_cate.id LEFT JOIN ev_users ON ev_articles.author_id = ev_users.id  where ev_articles.id = ?'
    db.query(sql, req.query.id, (err, results)=>{
        if(err){
            return res.cc(err)
        }
        if(results.length !== 1){
            return res.cc('没有查到对应的文章数据！')
        }
        // 查询成功
        res.send({
            status: 0,
            message: '获取文章成功！',
            data: results[0]
        })
    })
}


// 根据id删除文章
exports.deleteArticleById = (req, res)=>{
    const sql = 'update ev_articles set is_delete = 1 where id = ?'
    db.query(sql, req.query.id, (err, results)=>{
        if(err){
            return res.cc(err)
        }
        if(results.affectedRows !== 1){
            return res.cc('您要删除的文章不存在！')
        }
        // 删除成功
        res.cc('删除文章成功！', 0)
    })
}

//获取文章列表
exports.getArticleList = (req, res)=>{
    const sql = 'select * from ev_articles where is_delete = 0'
    db.query(sql, (err, results)=>{
        if(err){
            return res.cc(err)
        }
        res.send({
            status: 0,
            message: '获取文章列表成功！',
            data: results,
            total: results.length
        })
    })
}